package 数组;

import java.util.Arrays;

/**
 * 给你一个 非严格递增排列 的数组 nums ，请你 原地 删除重复出现的元素，使每个元素 只出现一次 ，返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。
 *
 * 考虑 nums 的唯一元素的数量为 k。去重后，返回唯一元素的数量 k。
 *
 * nums 的前 k 个元素应包含 排序后 的唯一数字。下标 k - 1 之后的剩余元素可以忽略。
 *
 * @author macy
 * @date 2025/11/3 14:43
 * leetcode 26
 */
public class RemoveDuplicates {

    public static void main(String[] args) {
        int[] nums = {0,0,1,1,1,2,2,3,3,4};
        //{0,1,2,3,4}
        System.out.println(removeDuplicates(nums));
        //想把nums打印出来结果
        System.out.println(Arrays.toString(nums));
    }


    public static int removeDuplicates(int[] nums) {
        if(nums == null || nums.length == 0){
            return 0;
        }
        int i = 0;
        for(int j = i + 1; j < nums.length; j++){
            if(nums[j] != nums[i]){
                nums[++i] = nums[j];
            }
        }
        return i + 1;
    }



    public static int removeDuplicates2(int[] nums){

        if(nums ==null || nums.length == 0){
            return 0;
        }

        int i=0;
        for (int j = i+1; j < nums.length; j++) {
            if(nums[i] != nums[j]){
                nums[++i]=nums[j];
            }
        }
        return i+1;
    }

}
